Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.08.2012, 13:14
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

Передать файл через API FILE в виде dataurL и принять на сервере. Как?
Здравствуйте, подскажите, пожалуйста.
Я прочитал файл через FileReader.
Получил что-то навроде
data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/7A....
Теперь вопрос, как мне все это дело передать в таком виде на сервер и не маловажный вопрос, как это все на сервере правильно принять?
Ответить с цитированием
  #2 (permalink)  
Старый 23.08.2012, 14:23
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

platedz,
Воткните в textarea, в скрытую форму и отправьте форму( наверно post запросом на сервер,
Ответить с цитированием
  #3 (permalink)  
Старый 23.08.2012, 16:41
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Если читаете в data:url, то просто отправляйте как обычный текст, так же принимайте и конвертируйте в бинарный формат с помощью соответствующих функций Вашего серверного языка. Потом останется лишь сохранить файл (имя загружаемого файла, разумеется, будет недоступно) на диск (или же произвести какие-либо другие действия).

А вообще, XHR2 поддерживает FormData, который при использовании с FileAPI позволяет отправлять файлы XHR запросами как в случае обычных форм. Серверный код, таким образом, не изменяется. См. пример.
Ответить с цитированием
  #4 (permalink)  
Старый 23.08.2012, 21:14
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

Спасибо, буду разбираться
Ответить с цитированием
  #5 (permalink)  
Старый 06.09.2012, 14:54
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

Отправляю изображения в виде data:url через тег Input или textarea/
парсю через Preg_match на Php
декодирую и читаю как изображение
$src = imagecreatefromstring(base64_decode($imgre[2]));

Все хорошо и замечательно, если я отправляю обычным способом, но при отправке через ajax, возникает ошибка. В чем может быть проблема. Может необходимо как - то правильно указать кодировку или еще что нибудь.
Подскажите пожалуйста
Ответить с цитированием
  #6 (permalink)  
Старый 06.09.2012, 15:01
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

Отправляете не Гет-ом, надеюсь? Какая ошибка?
Ответить с цитированием
  #7 (permalink)  
Старый 06.09.2012, 15:44
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

отправляю post.
все данные соединяю через param +=array[]+"&";



<b>Warning</b>: imagecreatefromstring() [<a href='function.imagecreatefromstring'>function.ima gecreatefromstring</a>]: gd-png: fatal libpng error: IHDR: CRC error in

<b>Warning</b>: imagecreatefromstring() [<a href='function.imagecreatefromstring'>function.ima gecreatefromstring</a>]: gd-png error: setjmp returns error condition in

<b>Warning</b>: imagecreatefromstring() [<a href='function.imagecreatefromstring'>function.ima gecreatefromstring</a>]: Passed data is not in 'PNG' format in

<b>Warning</b>: imagecreatefromstring() [<a href='function.imagecreatefromstring'>function.ima gecreatefromstring</a>]: Couldn't create GD Image Stream out of Data in

Последний раз редактировалось platedz, 06.09.2012 в 16:33.
Ответить с цитированием
  #8 (permalink)  
Старый 06.09.2012, 17:02
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

Решил сравнить файлы переданные обычным post и через ajax. В ajax + заменились на пробелы.
Поделитесь пожалуйста наиболее верным решением
Ответить с цитированием
  #9 (permalink)  
Старый 06.09.2012, 17:30
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

В общем и целом заменил пробелы на + и все вышло.
Не знаю, насколько этого достаточно, может кто-нибудь поделится опытом и знаниями по данному вопросу. Буду крайне признателен.
Ответить с цитированием
  #10 (permalink)  
Старый 06.09.2012, 18:01
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

я делал так:
пхп:

<?php
  move_uploaded_file($_FILES["loadfile"]["tmp_name"], "uploads/" . $_FILES["loadfile"]["name"]);
  echo "uploads/" . $_FILES["loadfile"]["name"];
?>


js:

var formdata = new FormData();
formdata.append('loadfile', file); // "file" это из input file

$.ajax({  
        url: "upload.php",  
        type: "POST",  
        data: formdata,  
        processData: false,  
        contentType: false,  
        success: function (res) {  
           console.info(res); 
        }  
    });



всё прекрасно читалось и сохранялось, без костылей))

Последний раз редактировалось tadjik1, 06.09.2012 в 18:04.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в страницу подгружаемую через AJAX передать $_GET? pagal AJAX и COMET 7 08.11.2011 21:09
Как передать referrer в iframe через jQuery? Zippa jQuery 1 25.06.2011 14:39
как отправить файл через XMLHttpRequest как мультипарт KOLANICH Общие вопросы Javascript 17 14.12.2010 19:02
Как в ajax запросе передать файл методом POST mcpro jQuery 1 16.12.2009 11:41
Как передать false через функцию? Tend Общие вопросы Javascript 7 16.03.2009 16:55